void test()
{
	[] {} ();
	[] { foo(); } ();
	[x] { foo(x); } ();
	[] (int x){ foo(x); } (42);
	[y] (int x){ foo(x, y); } (42);
	bar([] { return 1; } ());
	bar([] { return foo(); } ());
	bar([x] { return foo(x); } (42));
	bar([] (int x){ return foo(x); } (42));
	bar([y] (int x){ return foo(x, y); } (42));

	[] {} ();
	[] { foo(); } ();
	[x] { foo(x); } ();
	[] (int x){ foo(x); } (42);
	[y] (int x){ foo(x, y); } (42);
	bar([] { return 1; } ());
	bar([] { return foo(); } ());
	bar([x] { return foo(x); } (42));
	bar([] (int x){ return foo(x); } (42));
	bar([y] (int x){ return foo(x, y); } (42));
}
